package com.bestvike.stone.spring.shiro.realm;

import com.bestvike.stone.spring.shiro.auth.Auth;
import com.bestvike.stone.spring.shiro.authc.AuthenticationToken;
import com.bestvike.stone.spring.shiro.authc.exception.AuthenticationException;

/**
 * 认证领域
 */
public interface Realm {
    /**
     * 是否支持认证信息
     *
     * @param token 认证信息
     * @return 支持返回 true, 否则返回 false
     */
    boolean supports(AuthenticationToken token);

    /**
     * 执行认证
     *
     * @param token 认证信息
     * @return 认证结果
     * @throws AuthenticationException 认证失败异常
     */
    Auth authenticate(AuthenticationToken token) throws AuthenticationException;
}
